/**   
 *    
 * @file
 * @brief
 * @文件名	: GlobalToast
 * @版权所有	: 网龙应用软件开发一部
 * @作  者	: chenqian
 * @创建时间	: 2014-6-27 下午3:26:25 
 * @文件描述	:  
 * @version	Ver 1.1
 */
package com.common.widget;

import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.Toast;

import com.common.allCommon.CommonUtils;
import com.product.android.business.ApplicationVariable;

/**
 * Toast一般用来提示用户的误操作。
 * 但是如果同时显示多个Toast信息提示框，
 * 系统会将这些Toast信息提示框放到队列中，
 * 等前一个Toast信息提示框关闭后才会显示下一个Toast信息提示框。
 * 当用户在某些情况下，误操作多次时，
 * 使用 Toast提示会出现很多个Toast依次显示，
 * 在页面上停留很长时间，用户体验很不好！
 * 为了解决这一问题，每次创建Toast时先做一下判断，
 * 如果前面有Toast在显示，
 * 只需调用Toast中的setText()方法将要显示的信息替换即可。
 * <br>
 * Created 2014-6-27 下午3:26:25
 * 
 * @version
 * @author chenqian
 * 
 * @see
 */

public final class GlobalToast {
	private static final int DEFAULT_DURATION = 2000;
	private static Toast mToast;
	private static Handler mHandler = new Handler();
	/**
	 * Creates a new instance of GlobalToast.
	 * <br>Created 2014-6-27 下午4:21:56
	 */
	private GlobalToast(){		
	}
	private static Runnable r = new Runnable() {
		public void run() {
			if (null != mToast) {
				mToast.cancel();
			}
		}
	};

	/**
	 *显示toast 
	 * 
	 * <br>Created 2014-6-27 下午3:38:51
	 * @param text 消息字符串
	 * @param duration 延迟时间
	 * @author       chenqian
	 */
	public static void showToast(String text, int duration) {      
    	mHandler.removeCallbacks(r);
    	if(CommonUtils.isBackgroundRunning() || TextUtils.isEmpty(text)){
    		return;
    	}
    	Context ctx = ApplicationVariable.INSTANCE.applicationContext;
        if (mToast != null){
            mToast.setText(text);
        }else{
            mToast = Toast.makeText(ctx, text, Toast.LENGTH_SHORT);
        }
        if(0 == duration){
        	duration = DEFAULT_DURATION;
        }
        mHandler.postDelayed(r, duration);
        mToast.show();
    }

	/**
	 * 显示toast
	 * 
	 * <br>Created 2014-6-27 下午3:38:30
	 * @param resId 消息资源id
	 * @param duration 延迟时间
	 * @author       chenqian
	 */
	public static void showToast(int resId, int duration) {
		if(resId <= 0){
			return;
		}
		Context ctx = ApplicationVariable.INSTANCE.applicationContext;
		showToast(ctx.getResources().getString(resId), duration);
	}

//  此方法暂时弃用，方法中修改Toast的位置会导致全局Toast的位置都被修改
//	/**
//	 * 在中间显示toast
//	 *
//	 * <br>Created 2014-12-12 下午5:26:38
//	 * @param text 消息字符串
//     * @param duration 延迟时间
//	 * @author       caocr
//	 */
//	public static void showToastCenter(String text, int duration) {
//        mHandler.removeCallbacks(r);
//        if(CommonUtils.isBackgroundRunning() || TextUtils.isEmpty(text)){
//            return;
//        }
//        Context ctx = ApplicationVariable.INSTANCE.applicationContext;
//        if (mToast != null){
//            mToast.setText(text);
//        }else{
//            mToast = Toast.makeText(ctx, text, Toast.LENGTH_SHORT);
//        }
//        if(0 == duration){
//            duration = DEFAULT_DURATION;
//        }
//        mHandler.postDelayed(r, duration);
//        mToast.setGravity(Gravity.CENTER, 0, 0);
//        mToast.show();
//    }
	
//	/**
//	 * 在中间显示toast
//	 *
//	 * <br>Created 2014-12-12 下午5:11:51
//	 * @param resId 消息资源id
//	 * @param duration 延迟时间
//	 * @author       caocr
//	 */
//	public static void showToastCenter(int resId, int duration) {
//        if(resId <= 0){
//            return;
//        }
//        Context ctx = ApplicationVariable.INSTANCE.applicationContext;
//        showToastCenter(ctx.getResources().getString(resId), duration);
//    }
}
